home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / 90xx / 9001a.d64 / sub dir sys 1.2 (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  12KB  |  556 lines

  1. 100 REM ******************
  2. 110 REM *                *
  3. 120 REM * SUB DIR SYSTEM *
  4. 130 REM * 64'ER 2/89 S36 *
  5. 140 REM ******************
  6. 150 REM
  7. 160 REM (C) 1988 BY
  8. 170 REM DIRK JANSEN
  9. 180 REM
  10. 190 REM VER 1.1 - 21.07.88
  11. 200 REM ==================
  12. 210 :
  13. 220 PRINT CHR$(147)
  14. 230 PRINT TAB(13);"SUB DIR SYSTEM"
  15. 240 PRINT
  16. 250 PRINT TAB(13);"V1.1  21.07.88"
  17. 260 PRINT
  18. 270 PRINT TAB(8);"(C) 1988 BY DIRK JANSEN"
  19. 280 PRINT
  20. 282 PRINT TAB(5);"ENLARGED 1989 BY HORST STIELER"
  21. 284 PRINT
  22. 290 PRINT"========================================"
  23. 300 GOSUB 4000:REM * GERAETE NUMMERN ABFRAGEN
  24. 310 NU$=CHR$(0): RESTORE: FOR I=0 TO 7: READ BY$: NEXT I
  25. 312 D0$=STR$(0)+STR$(5)+STR$(35)
  26. 314 D1$=""
  27. 316 FOR I=1 TO 17: READ BY: D1$=D1$+STR$(BY): NEXT I
  28. 318 READ BY
  29. 320 D2$=""
  30. 322 FOR I=19 TO 22: READ BY: D2$=D2$+STR$(BY): NEXT I
  31. 324 READ BY
  32. 326 D3$=""
  33. 328 FOR I=24 TO 35: READ BY: D3$=D3$+STR$(BY): NEXT I
  34. 329 RESTORE
  35. 330 GOSUB 44650
  36. 332 DIM FE$(29),FT$(4),FS$(3)
  37. 334 FT$(0)="DEL": FT$(1)="SEQ": FT$(2)="PRG": FT$(3)="USR": FT$(4)="REL"
  38. 335 DIM BA(35,4)
  39. 340 PRINT CHR$(147)
  40. 350 PRINT"***** SUB DIR SYSTEM V 1.1 *****"
  41. 360 PRINT
  42. 370 PRINT "GERAET:";U,"LAUFWERK: ";D$
  43. 380 PRINT:PRINT
  44. 390 PRINT" 1 - SUB DIR SYSTEM ANLEGEN"
  45. 400 PRINT
  46. 410 PRINT" 2 - SUB DIR ANLEGEN"
  47. 420 PRINT
  48. 430 PRINT" 3 - DISK BEFEHL"
  49. 440 PRINT
  50. 450 PRINT" 4 - INHALTSVERZEICHNIS"
  51. 460 PRINT
  52. 470 PRINT" 5 - GERAETE NUMMERN AENDERN"
  53. 480 PRINT
  54. 481 PRINT" 6 - DIRECTORYS LISTEN/DRUCKEN"
  55. 482 PRINT
  56. 483 PRINT" 7 - DISKETTE VALIDIEREN"
  57. 484 PRINT
  58. 485 PRINT" 8 - SUB DIR LOESCHEN"
  59. 486 PRINT
  60. 490 PRINT" 0 - PROGRAMM ENDE"
  61. 500 PRINT:PRINT
  62. 510 INPUT"IHRE WAHL";O
  63. 520 ON O+1 GOSUB 1000,10000,20000,2000,3000,4000,41050,41420,42000
  64. 530 GOTO 340
  65. 970 :
  66. 980 REM *** ENDE ***
  67. 990 :
  68. 1000 SYS 64738
  69. 1970 :
  70. 1980 REM *** DISK BEFEHL ***
  71. 1990 :
  72. 2000 PRINT
  73. 2010 POKE 198,3
  74. 2020 POKE 631,34
  75. 2030 POKE 632,20
  76. 2040 POKE 633,34
  77. 2050 A$=""
  78. 2060 INPUT"BEFEHL";A$
  79. 2070 OPEN 15,U,15
  80. 2080 IF A$="" THEN 2200
  81. 2090 PRINT#15,A$
  82. 2200 PRINT
  83. 2210 PRINT"STATUS: ";
  84. 2220 GET#15,E$: IF E$<>CHR$(13) THEN PRINTE$;: GOTO 2220
  85. 2230 CLOSE15
  86. 2240 PRINT:PRINT:PRINT"- TASTE DRUECKEN -"
  87. 2250 GET A$: IF A$="" THEN 2250
  88. 2260 RETURN
  89. 2970 :
  90. 2980 REM *** INHALTSVERZEICHNIS ***
  91. 2990 :
  92. 3000 PRINT
  93. 3010 OPEN 1,U,0,"$"+D$
  94. 3020 POKE 781,1
  95. 3040 GET#1,A$,A$
  96. 3050 GET#1,A$,A$: IF ST=64 THEN 3110
  97. 3060 : GET#1,A$,B$:PRINTCHR$(157);ASC(A$+CHR$(0))+256*ASC(B$+CHR$(0));
  98. 3070 : GET#1,A$:PRINT A$;: IF A$<>"" THEN 3070
  99. 3080 : PRINT
  100. 3090 GOTO 3050
  101. 3110 CLOSE 1
  102. 3120 PRINT:PRINT:PRINT"- TASTE DRUECKEN -"
  103. 3130 GET A$: IF A$="" THEN 3130
  104. 3140 RETURN
  105. 3970 :
  106. 3980 REM *** GERAETE NUMMERN AENDERN ***
  107. 3990 :
  108. 4000 PRINT
  109. 4010 INPUT"GERAETE NUMMER? 8[157][157][157]";U
  110. 4020 IF U<8 OR U>15 THEN 4010
  111. 4030 INPUT"LAUFWERK      ? 0[157][157][157]";D$
  112. 4040 IF D$<>"0" AND D$<>"1" THEN 4030
  113. 4050 RETURN
  114. 9970 :
  115. 9980 REM *** SYSTEM ANLEGEN ***
  116. 9990 :
  117. 10000 OPEN 15,U,15,"I"+D$
  118. 10010 INPUT#15,E1,E2$,E3,E4
  119. 10020 IF E1=0 THEN 10100
  120. 10030 PRINT
  121. 10040 PRINT"*** DISK: ";E1;E2$;E3;E4;"***"
  122. 10050 PRINT
  123. 10060 RETURN
  124. 10100 OPEN 2,U,2,"#"
  125. 10110 PRINT#15,"U1 2 ";D$;" 18 1"
  126. 10112 FOR I=2 TO 226 STEP 32
  127. 10120 : PRINT#15,"B-P 2";I
  128. 10130 : GET#2,T$
  129. 10150 : IF T$<>"" THEN 10170
  130. 10160 NEXT I
  131. 10162 PRINT#15,"B-P 2 0"
  132. 10164 GET#2,T$
  133. 10166 IF T$="" THEN 10220
  134. 10170 : PRINT
  135. 10180 : PRINT"*** DISK IST NICHT LEER ***"
  136. 10190 : PRINT
  137. 10200 : INPUT"DISK LOESCHEN(J/N)? N[157][157][157]";A$
  138. 10210 : IF A$="N" THEN CLOSE2:CLOSE15: RETURN
  139. 10220 : PRINT:PRINT"IMPRESSUM SCHREIBEN"
  140. 10222 PRINT#15,"B-P 2 00"
  141. 10230 PRINT#2,CHR$(0);CHR$(255);
  142. 10240 FOR I=0 TO 7
  143. 10242 : PRINT#15,"B-P 2";I*32+2
  144. 10250 : PRINT#2,CHR$(195);CHR$(18);CHR$(0);
  145. 10260 : READ A$
  146. 10270 : PRINT#2,LEFT$(A$+"[160][160][160][160][160][160][160][160][160][160][160][160][160][160][160]",16);
  147. 10280 : PRINT#2,CHR$(0);CHR$(0);CHR$(0);
  148. 10290 : PRINT#2,"DIRK";
  149. 10300 : PRINT#2,CHR$(0);CHR$(0);
  150. 10310 : PRINT#2,CHR$(0);CHR$(0);
  151. 10320 NEXT I
  152. 10330 PRINT#15,"U2 2 ";D$;" 18 01"
  153. 10340 PRINT:PRINT"ROOT DIR ANLEGEN"
  154. 10350 CLOSE2
  155. 10360 CLOSE15
  156. 10370 N$="======ROOT======":REM -NAMEUEBERGEBEN
  157. 10380 GOSUB 30000:REM - DIR ANLEGEN
  158. 10470 OPEN15,U,15
  159. 10480 PRINT:PRINT"INIT DISK"
  160. 10490 PRINT#15,"I";D$
  161. 10500 PRINT:PRINT"VALIDATE DISK"
  162. 10510 PRINT#15,"V";D$
  163. 10520 CLOSE15
  164. 10530 RETURN
  165. 10662 PRINT#15,"B-P 2 0"
  166. 10664 GET#2,T$
  167. 10666 IF T$<>"" THEN 10180
  168. 12000 DATA " SUB DIR SYSTEM "
  169. 12010 DATA "(W) '88 D.JANSEN"
  170. 12020 DATA "                "
  171. 12030 DATA "USE DISK COMMAND"
  172. 12040 DATA "   &XXXXXX TO   "
  173. 12050 DATA "   CHANGE DIR   "
  174. 12060 DATA "                "
  175. 12070 DATA " DON'T VALIDATE "
  176. 19970 :
  177. 19980 REM *** DIR ANLEGEN ***
  178. 19990 :
  179. 20000 PRINT
  180. 20010 N$="":INPUT"DIR NAME (MAX 15 ZEICHEN)";N$
  181. 20020 IF LEN(N$)>15 OR LEN(N$)<1 THEN 20010
  182. 20030 N1$=N$
  183. 20040 IF LEN(N$)<16 THEN N$="="+N$+"=":GOTO 20040
  184. 20050 N$=LEFT$(N$,16)
  185. 21000 PRINT:PRINT"DIR ANLEGEN"
  186. 21010 GOSUB 30000:REM - DIR ANLEGEN
  187. 21900 RESTORE
  188. 21910 FOR I=0 TO 7
  189. 21920 : READ A$
  190. 21930 NEXT I
  191. 22000 PRINT:PRINT"UMSCHALT BEFEHL ANLEGEN T:";T;" S:";S
  192. 22010 OPEN2,U,2,"&"+N1$+",U,W"
  193. 22020 PRINT#2,CHR$(0);CHR$(5);:REM - STARTADRESSE
  194. 22030 PRINT#2,CHR$(35);:REM - ANZAHL BYTES
  195. 22040 P=0
  196. 22050 FOR I=1 TO 35
  197. 22060 : READ A
  198. 22070 : IF A=-1 THEN A=T
  199. 22080 : IF A=-2 THEN A=S
  200. 22090 : P=P+A: IF P>255 THEN P=P-255
  201. 22100 : PRINT#2,CHR$(A);
  202. 22110 NEXT I
  203. 22120 P=P+5+35
  204. 22130 P=P-(255*INT(P/256))
  205. 22140 PRINT#2,CHR$(P);
  206. 22150 CLOSE2
  207. 23000 PRINT:PRINT"UMSCHALTEN"
  208. 23010 OPEN15,U,15
  209. 23020 OPEN 2,U,2,"#"
  210. 23030 PRINT#15,"U1 2 ";D$;" 18 01"
  211. 23040 PRINT#15,"B-P 2 0"
  212. 23050 GET#2,T$,S$
  213. 23060 T=ASC(T$+CHR$(0))
  214. 23070 S=ASC(S$+CHR$(0))
  215. 23080 CLOSE2
  216. 23090 PRINT#15,"&"+N1$
  217. 23100 CLOSE15
  218. 23900 RESTORE
  219. 23910 FOR I=0 TO 7
  220. 23920 : READ A$
  221. 23930 NEXT I
  222. 24000 PRINT:PRINT"RUECKSCHALT BEFEHL ANLEGEN  T:";T;" S:";S
  223. 24010 OPEN2,U,2,"&BACK,U,W"
  224. 24020 PRINT#2,CHR$(0);CHR$(5);:REM - STARTADRESSE
  225. 24030 PRINT#2,CHR$(35);:REM - ANZAHL BYTES
  226. 24040 P=0
  227. 24050 FOR I=1 TO 35
  228. 24060 : READ A
  229. 24070 : IF A=-1 THEN A=T
  230. 24080 : IF A=-2 THEN A=S
  231. 24090 : P=P+A: IF P>255 THEN P=P-255
  232. 24100 : PRINT#2,CHR$(A);
  233. 24110 NEXT I
  234. 24120 P=P+5+35
  235. 24130 P=P-(255*INT(P/256))
  236. 24140 PRINT#2,CHR$(P);
  237. 24150 CLOSE2
  238. 25000 PRINT:PRINT"RUECKSCHALTEN"
  239. 25010 OPEN15,U,15
  240. 25020 PRINT#15,"&BACK"
  241. 25030 CLOSE15
  242. 25040 RETURN
  243. 29970 :
  244. 29980 REM *** DIR ANLEGEN ***
  245. 29990 :
  246. 30000 OPEN15,U,15
  247. 30010 OPEN 2,U,2,"#"
  248. 30020 PRINT#15,"U1 2 ";D$;" 18 01"
  249. 30030 PRINT#15,"B-P 2 0"
  250. 30040 GET#2,T$
  251. 30050 T1=ASC(T$+CHR$(0))
  252. 30070 PRINT#15,"B-A ";D$;" 18 00"
  253. 30080 INPUT#15,A,A$,T,S
  254. 30090 PRINT#15,"B-A ";D$;T;S
  255. 30100 PRINT#15,"B-P 2 00"
  256. 30110 PRINT#2,CHR$(0);CHR$(255);
  257. 30120 PRINT#2,CHR$(195);CHR$(18);CHR$(0);
  258. 30130 PRINT#2,LEFT$(N$+"[160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160]",16);
  259. 30140 PRINT#2,CHR$(0);CHR$(0);CHR$(0);
  260. 30150 PRINT#2,"DIR ";
  261. 30160 PRINT#2,CHR$(0);CHR$(0);
  262. 30170 PRINT#2,CHR$(0);CHR$(0);
  263. 30180 PRINT#2,CHR$(0);CHR$(0);
  264. 30260 FOR I=34 TO 253
  265. 30270 : PRINT#2,CHR$(0);
  266. 30280 NEXT I
  267. 30300 PRINT#15,"U2 2 ";D$;T;S
  268. 30310 IF T1=18 THEN 30500
  269. 30320 : PRINT#15,"U1 2 ";D$;" 18 01"
  270. 30330 : PRINT#15,"B-P 2 0"
  271. 30340 : PRINT#2,CHR$(T);CHR$(S);
  272. 30350 : PRINT#15,"U2 2 ";D$;" 18 01"
  273. 30500 CLOSE15
  274. 30510 CLOSE2
  275. 30520 RETURN
  276. 39970 :
  277. 39980 REM *** DATEN FUER & FILE ***
  278. 39990 :
  279. 40000 DATA 169,18,133,8,169,1,133,9,169,128,133,1,165,1,48,252,169,-1,141,0,4
  280. 40010 DATA 169,-2,141,1,4,169,144,133,1,165,1,48,252,96
  281. 41000 :
  282. 41010 REM *****************************
  283. 41020 REM * DIRECTORYS LISTEN/DRUCKEN
  284. 41030 REM *
  285. 41050 DR=B0
  286. 41060 PRINT"AUSGABE AUCH AUF DRUCKER ? (J/N)"
  287. 41070 GET BY$: IF BY$="" THEN 41070
  288. 41080 IF BY$<>"J" THEN 41140
  289. 41090 PRINT"GERAETEADRESSE (4/5) ?": BY$=""
  290. 41100 GET BY$:IF BY$="" THEN 41100
  291. 41110 PR=VAL(BY$): IF PR>=4 AND PR<=5 THEN DR=B1: OPEN4,PR: GOTO 41140
  292. 41120 PRINT"GERAETEADRESSE IST NICHT 4 ODER 5": GOTO 41320
  293. 41140 HE=1
  294. 41150 OPEN15,U,15
  295. 41160 OPEN2,U,2,"#"
  296. 41190 PRINT#15,"U1 2 ";D$;" 18 0"
  297. 41200 PRINT#15,"B-P 2 144"
  298. 41210 DN$="": FOR I=144 TO 159: GET#2,BY$: DN$=DN$+BY$: NEXT I: GET#2,BY$,BY$
  299. 41220 ID$="": FOR I=162 TO 166: GET#2,BY$: ID$=ID$+BY$: NEXT I
  300. 41230 UE$=" 0  "+CHR$(34)+DN$+CHR$(34)+" "+ID$+"[146]"
  301. 41250 DE=0
  302. 41260 GOSUB 42610
  303. 41280 PRINT#15,"M-R"CHR$(250)CHR$(2)CHR$(3)
  304. 41290 GET#15,LO$,BY$,HI$
  305. 41300 PRINT 256*ASC(HI$+NU$)+ASC(LO$+NU$);" BLOCKS FREE."
  306. 41310 IF DR=B1 THEN PRINT#4,256*ASC(HI$+NU$)+ASC(LO$+NU$);" BLOCKS FREE."
  307. 41320 CLOSE 2
  308. 41330 CLOSE 15
  309. 41340 IF DR=B1 THEN DR=B0: PRINT#4: CLOSE 4
  310. 41350 GOSUB 2240
  311. 41360 RETURN
  312. 41380 REM *****************************
  313. 41390 REM * DISKETTE VALIDIEREN
  314. 41400 REM *
  315. 41420 HE=2
  316. 41430 OPEN15,U,15
  317. 41440 OPEN2,U,2,"#"
  318. 41480 PRINT#15,"R:&BACK=&BACK"
  319. 41490 INPUT#15,E1,BY$,BY,BY
  320. 41500 IF E1=62 THEN 41560
  321. 41510 PRINT"WORKING-DIRECTORY IST NICHT DIE ROOT-"
  322. 41520 PRINT"DIRECTORY"
  323. 41530 CLOSE 2: GOSUB 2240: GOTO 41930
  324. 41560 FOR I=1 TO 35
  325. 41570 FOR J=2 TO 4
  326. 41580 BA(I,J)=255
  327. 41590 NEXT J
  328. 41600 NEXT I
  329. 41620 GOSUB 44480
  330. 41640 DE=0
  331. 41650 GOSUB 42610
  332. 41680 PRINT"BERECHNUNG DER FREIEN BLOECKE PRO SPUR"
  333. 41690 FOR I=1 TO 35
  334. 41700 EI=0
  335. 41710 FOR J=2 TO 4
  336. 41720 DZ=BA(I,J)
  337. 41730 DZ=DZ/2: IF DZ<>INT(DZ) THEN EI=EI+1
  338. 41740 DZ=INT(DZ): IF DZ>0 THEN 41730
  339. 41750 NEXT J
  340. 41760 BA(I,1)=EI: PRINT".";
  341. 41770 NEXT I
  342. 41790 CLOSE 2
  343. 41810 PRINT: PRINT"SCHREIBEN DER BAM"
  344. 41820 FOR I=1 TO 35
  345. 41830 PRINT#15,"M-W"CHR$(4*I)CHR$(7)CHR$(2)CHR$(BA(I,1))CHR$(BA(I,2))
  346. 41840 PRINT#15,"M-W"CHR$(4*I+2)CHR$(7)CHR$(2)CHR$(BA(I,3))CHR$(BA(I,4))
  347. 41850 NEXT I
  348. 41880 PRINT#15,"M-W"CHR$(14)CHR$(0)CHR$(2)CHR$(18)CHR$(0)
  349. 41890 PRINT#15,"M-W"CHR$(4)CHR$(0)CHR$(1)CHR$(144)
  350. 41900 PRINT#15,"M-R"CHR$(4)CHR$(0): GET#15,BY$: IF BY$=CHR$(144) THEN 41900
  351. 41920 PRINT#15,"I";D$
  352. 41930 CLOSE 15
  353. 41940 RETURN
  354. 41960 REM *****************************
  355. 41970 REM * DELETE DIR
  356. 41980 REM *
  357. 42000 OPEN15,U,15
  358. 42010 OPEN2,U,2,"#"
  359. 42020 GET#2,BY$: PN=ASC(BY$+NU$)
  360. 42040 INPUT"ZU LOESCHENDES DIRECTORY";DI$
  361. 42050 DI$="&"+DI$
  362. 42060 IF LEN(DI$)>16 THEN PRINT"NAME ZU LANG": GOSUB2240: GOTO 42480
  363. 42090 PRINT"DIRECTORY WECHSELN"
  364. 42100 PRINT#15,DI$
  365. 42110 INPUT#15,E1,E2$,E3,E4
  366. 42120 IF E1<>0 THEN PRINT E1,E2$,E3,E4: GOSUB 2240: GOTO 42480
  367. 42210 AN=1: DE=1: ZE=0: AZ=0: RK=0: AK=3
  368. 42220 GOSUB 43350
  369. 42230 IF RK=0 THEN 42290
  370. 42240 PRINT"SUBDIRECTORY IST NICHT LEER"
  371. 42250 PRINT#15,"&BACK"
  372. 42260 GOSUB 2240: GOTO 42480
  373. 42290 PRINT"DIRECTORYUEBERSCHRIFT LOESCHEN"
  374. 42300 PRINT#15,"U1 2 ";D$;STR$(T1);STR$(S1)
  375. 42310 PRINT#15,"M-W"CHR$(2)CHR$(PN+3)CHR$(1)CHR$(0)
  376. 42320 PRINT#15,"U2 2 ";D$;STR$(T1);STR$(S1)
  377. 42350 PRINT#15,"U1 2 ";D$;STR$(T2);STR$(S2)
  378. 42380 PRINT"'&BACK'-DATEI LOESCHEN"
  379. 42390 PRINT#15,"S";D$;":&BACK,U"
  380. 42420 PRINT"RUECKSCHALTEN"
  381. 42430 PRINT#15,"M-E"CHR$(5)CHR$(PN+3)
  382. 42450 PRINT"SUBDIRECTORYEINTRAG LOESCHEN"
  383. 42460 PRINT#15,"S";D$;":";DI$
  384. 42480 CLOSE 2
  385. 42490 CLOSE 15
  386. 42500 RETURN
  387. 42520 REM *******************************************
  388. 42530 REM * DIRECTORYS DRUCKEN / DISKETTE VALIDIEREN
  389. 42540 REM *
  390. 42610 IF HE=2 THEN AK=2: GOTO 42860
  391. 42620 AK=1: AN=1
  392. 42660 PRINT SPC(DE);UE$
  393. 42670 IF DR=B1 THEN PRINT#4,SPC(DE);UE$
  394. 42680 GOSUB 44770: IF P3=B1 THEN 42790
  395. 42690 PRINT SPC(DE);" WEG: ";
  396. 42700 IF DR=B1 THEN PRINT#4,SPC(DE);" WEG: ";
  397. 42710 FOR I=K3 TO SP+1 STEP -1
  398. 42720 PRINT MID$(SK$(I),6);
  399. 42730 IF DR=B1 THEN PRINT#4,MID$(SK$(I),6);
  400. 42740 IF I>SP+1 THEN PRINT"/";: IF DR=B1 THEN PRINT#4,"/";
  401. 42750 NEXT I
  402. 42760 PRINT: IF DR=B1 THEN PRINT#4
  403. 42790 TR=18: SC=1
  404. 42800 ZE=0
  405. 42810 GOSUB 43350
  406. 42820 PRINT: IF DR=B1 THEN PRINT#4
  407. 42860 TR=18: SC=1: ZE=0
  408. 42870 SA=AK: IF HE=1 THEN AK=2
  409. 42880 GOSUB 43350
  410. 42890 AK=SA
  411. 42900 IF RC=0 THEN 43100
  412. 42940 VA$=CHR$(TR)+CHR$(SC)+CHR$(ZE)+CHR$(NT)+CHR$(NS)
  413. 42950 FOR I=1 TO 16: Z$=MID$(F$,I,1): IFZ$<>"[160]"THENVA$=VA$+Z$:REM SHIFT-SPACE!
  414. 42960 NEXT I
  415. 42970 GOSUB 44850
  416. 42990 PRINT#15,F$
  417. 43000 DE=DE+1
  418. 43010 AN=1
  419. 43020 IF HE=1 THEN 42660
  420. 43050 GOSUB 44480
  421. 43060 AN=1
  422. 43070 GOTO 42860
  423. 43100 GOSUB 44770
  424. 43110 IF P3=B1 THEN F$="": RETURN
  425. 43140 GOSUB 44940
  426. 43150 TR=ASC(MID$(VA$,1,1))
  427. 43160 SC=ASC(MID$(VA$,2,1))
  428. 43170 ZE=ASC(MID$(VA$,3,1))
  429. 43180 NT=ASC(MID$(VA$,4,1))
  430. 43190 NS=ASC(MID$(VA$,5,1))
  431. 43230 PRINT#15,"&BACK": DE=DE-1: AN=0
  432. 43250 ZE=ZE+1
  433. 43260 GOTO 42870
  434. 43280 REM *****************************
  435. 43290 REM * ALLE DIRECTORYEINTRAEGE EINER DIR. ABKLAPPERN
  436. 43300 REM *
  437. 43350 IF AN=0 THEN 43430
  438. 43360 IF DE=0 THEN 43430
  439. 43390 PRINT#15,"U1 2 ";D$;" 18 1"
  440. 43400 GET#2,TR$,SC$: TR=ASC(TR$+NU$): SC=ASC(SC$+NU$)
  441. 43430 PRINT#15,"U1 2 ";D$;TR;SC
  442. 43450 GET#2,NT$,NS$: NT=ASC(NT$+NU$): NS=ASC(NS$+NU$)
  443. 43480 PRINT#15,"B-P 2 ";ZE*32+2
  444. 43490 FOR I=0 TO 29: GET#2,FE$(I): NEXT I
  445. 43520 ON AK GOTO 43550,43730,43800
  446. 43550 IF ASC(FE$(0)+NU$)=0 THEN 43700
  447. 43560 BL=256*ASC(FE$(29)+NU$)+ASC(FE$(28)+NU$)
  448. 43570 F$=STR$(BL)
  449. 43580 IF BL<100 THEN F$=F$+" "
  450. 43590 IF BL<10 THEN F$=F$+" "
  451. 43600 F$=F$+"  "+CHR$(34)
  452. 43610 FOR J=3 TO 18: F$=F$+FE$(J): NEXT J
  453. 43620 F$=F$+CHR$(34)+" "
  454. 43630 FT=ASC(FE$(0)+NU$)
  455. 43640 IF (FT AND 2^7)=0 THEN F$=F$+"*": GOTO 43660
  456. 43650 F$=F$+" "
  457. 43660 F$=F$+FT$(FT AND 3)
  458. 43670 IF FT AND 2^6 THEN F$=F$+"<"
  459. 43680 PRINT SPC(DE);F$
  460. 43690 IF DR=B1 THEN PRINT#4,SPC(DE);F$
  461. 43700 GOTO 43980
  462. 43730 GOSUB 44080
  463. 43740 IF RC=1 THEN RETURN
  464. 43770 GOTO43980
  465. 43800 FT=ASC(FE$(0)+NU$)
  466. 43810 IF AZ>0 THEN 43880
  467. 43820 BL=256*ASC(FE$(29)+NU$)+ASC(FE$(28)+NU$)
  468. 43830 IF FT<>195 OR BL<>0 THEN RK=1: RETURN
  469. 43850 T1=TR: S1=SC
  470. 43860 AZ=1
  471. 43870 GOTO 43980
  472. 43880 IF FT=0 THEN 43980
  473. 43890 IF FT<>131 THEN RK=1: RETURN
  474. 43900 IF AZ=2 THEN RK=1: RETURN
  475. 43920 F$="": FOR J=3 TO 18: F$=F$+FE$(J): NEXT J
  476. 43930 IFF$<>"&BACK[160][160][160][160][160][160][160][160][160][160][160]"THENRK=1:RETURN
  477. 43940 T2=ASC(FE$(1)+NU$)
  478. 43950 S2=ASC(FE$(2)+NU$)
  479. 43960 AZ=2
  480. 43980 ZE=ZE+1
  481. 43990 IF ZE=8 AND NT=0 THEN RC=0: RETURN
  482. 44000 IF ZE=8 THEN TR=NT: SC=NS: ZE=0: GOTO 43430
  483. 44010 GOTO 43480
  484. 44030 REM *****************************
  485. 44040 REM * TEST, OB EINTRAG DIRECTORYEINTRAG
  486. 44050 REM *
  487. 44080 RC=0
  488. 44090 IF (ASC(FE$(0)+NU$) AND 131)<>131 THEN RETURN
  489. 44100 IF 256*ASC(FE$(29)+NU$)+ASC(FE$(28)+NU$)<>1 THEN RETURN
  490. 44110 IF FE$(3)<>"&" THEN RETURN
  491. 44130 F$="": FOR I=3 TO 18: F$=F$+FE$(I): NEXT I
  492. 44140 IF F$="&BACK[160][160][160][160][160][160][160][160][160][160][160]" THEN RETURN: REM !! DIES SIND <SHIFT><SPACE>
  493. 44180 OPEN3,U,3,F$+",U,R"
  494. 44190 FS$(0)=""
  495. 44200 FOR I=0 TO 2: GET#3,BY$: FS$(0)=FS$(0)+STR$(ASC(BY$+NU$)): NEXT I
  496. 44210 P=0
  497. 44220 FS$(1)="": FS$(2)="": FS$(3)=""
  498. 44230 FOR I=1 TO 35
  499. 44240 GET#3,BY$
  500. 44250 IF (I=18) OR (I=23) THEN 44280
  501. 44260 Z=-(I>0 AND I<18)-2*(I>18 AND I<23)-3*(I>23 AND I<36)
  502. 44270 FS$(Z)=FS$(Z)+STR$(ASC(BY$+NU$))
  503. 44280 P=P+ASC(BY$+NU$)
  504. 44290 IF P>255 THEN P=P-255
  505. 44300 NEXT I
  506. 44310 GET#3,BY$
  507. 44320 CLOSE 3
  508. 44330 P=P+5+35
  509. 44340 P=P-(255*INT(P/256))
  510. 44350 IF P<>ASC(BY$+NU$) THEN RETURN
  511. 44380 IF D0$<>FS$(0) OR D1$<>FS$(1) OR D2$<>FS$(2) OR D3$<>FS$(3) THEN RETURN
  512. 44410 RC=1
  513. 44420 RETURN
  514. 44440 REM *****************************
  515. 44450 REM * DIR VALIDIEREN & IN DER COMPUTERBAM BLOECKE BELEGEN
  516. 44480 PRINT"VALIDIERE DIRECTORY ";F$
  517. 44490 CLOSE 2
  518. 44500 PRINT#15,"V";D$
  519. 44520 PRINT#15,"M-R"CHR$(4)CHR$(7)CHR$(140)
  520. 44530 FOR I=1 TO 35
  521. 44540 GET#15,BY$,B2$,B3$,B4$
  522. 44550 BA(I,2)=BA(I,2) AND ASC(B2$+NU$)
  523. 44560 BA(I,3)=BA(I,3) AND ASC(B3$+NU$)
  524. 44570 BA(I,4)=BA(I,4) AND ASC(B4$+NU$)
  525. 44580 NEXT I
  526. 44590 OPEN2,8,2,"#"
  527. 44600 RETURN
  528. 44620 REM *****************************
  529. 44630 REM * INIT-STACK
  530. 44640 REM *
  531. 44650 K3=20
  532. 44660 DIM SK$(K3)
  533. 44670 SP=K3
  534. 44680 B0=0
  535. 44690 B1=-1
  536. 44700 RETURN
  537. 44720 REM *****************************
  538. 44730 REM * EMPTY-STACK
  539. 44760 REM *
  540. 44770 P3=B0
  541. 44780 IF SP=K3 THEN P3=B1
  542. 44790 RETURN
  543. 44810 REM *****************************
  544. 44820 REM * PUSH
  545. 44840 REM *
  546. 44850 IF SP<0 THEN PRINT"STACK OVERFLOW": CLOSE 2: CLOSE 15: END
  547. 44860 SK$(SP)=VA$
  548. 44870 SP=SP-1
  549. 44880 RETURN
  550. 44900 REM *****************************
  551. 44910 REM * POP
  552. 44930 REM *
  553. 44940 SP=SP+1
  554. 44950 VA$=SK$(SP)
  555. 44960 RETURN
  556.